package com.example.practice.repository;

import com.example.practice.entity.CommunityPhoto;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface CommunityPhotoRepository extends JpaRepository<CommunityPhoto, Long> {
    
    /**
     * 根据用户名查找用户上传的照片
     * @param username 用户名
     * @return 用户上传的照片列表
     */
    List<CommunityPhoto> findByUsername(String username);
    
    /**
     * 根据用户ID查找用户上传的照片
     * @param userId 用户ID
     * @return 用户上传的照片列表
     */
    List<CommunityPhoto> findByUserId(Long userId);
    
    /**
     * 查找所有照片，按创建时间倒序排列
     * @return 所有照片列表
     */
    List<CommunityPhoto> findAllByOrderByCreatedAtDesc();
    
    /**
     * 查找点赞数最多的照片
     * @param limit 限制数量
     * @return 热门照片列表
     */
    List<CommunityPhoto> findTop10ByOrderByLikesCountDesc();
    
    /**
     * 检查用户是否已经上传过相同URL的照片
     * @param username 用户名
     * @param photoUrl 照片URL
     * @return 是否存在
     */
    boolean existsByUsernameAndPhotoUrl(String username, String photoUrl);
    
    /**
     * 根据照片ID和用户名查找照片
     * @param id 照片ID
     * @param username 用户名
     * @return 照片对象
     */
    CommunityPhoto findByIdAndUsername(Long id, String username);
}